package com.huashi.dealer.modular.business.article.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huashi.dealer.commonEntity.Article;
import com.huashi.dealer.commonEntity.ArticleCategory;
import com.huashi.dealer.modular.business.article.param.ArticleResponseParam;
import com.huashi.dealer.modular.business.article.vo.ArticleVo;

import java.util.List;

/**
 * API文章Service接口
 *
 * @author 谭陈强
 * @since 2025-07-30
 */
public interface ArticleService extends IService<Article> {

    /**
     * 获取文章列表
     *
     * @param categoryId 分类ID
     * @return 文章列表
     */
    Page<Article> getArticleList(Long categoryId);

    /**
     * 获取分类列表
     *
     * @return 分类列表
     */
    List<ArticleCategory> getCategoryList();

    /**
     * 获取文章列表（无参数）
     *
     * @return 文章列表
     */
    ArticleResponseParam getArticleListWithoutParams();

    /**
     * 获取文章详情
     *
     * @param articleId 文章ID
     * @return 文章详情
     */
    ArticleVo getArticleDetail(Long articleId);

    /**
     * 获取热门文章
     *
     * @param token 用户令牌
     * @param limit 限制数量
     * @return 热门文章列表
     */
    ArticleResponseParam getHotArticles(String token, Integer limit);

    /**
     * 获取推荐文章
     *
     * @param token 用户令牌
     * @param limit 限制数量
     * @return 推荐文章列表
     */
    ArticleResponseParam getRecommendArticles(String token, Integer limit);

    /**
     * 搜索文章
     *
     * @param keyword 搜索关键词
     * @param token 用户令牌
     * @param categoryId 分类ID
     * @param page 页码
     * @param listRows 每页数量
     * @return 搜索结果
     */
    ArticleResponseParam searchArticles(String keyword, String token, Long categoryId, Integer page, Integer listRows);
} 